package com.example.study1;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/* List 的常用操作示例
批量操作：addAll(), removeAll(), retainAll() 等方法可以批量处理元素
子列表：subList() 返回原列表的视图，对子列表的修改会影响原列表
查找操作：contains(), indexOf(), lastIndexOf() 用于元素查找
集合运算：retainAll() 求交集，removeAll() 求差集*/
public class ListOperations {
    public static void main(String[] args) {
        // 创建两个列表
        List<String> list1 = new ArrayList<>();                    // 创建空列表 list1
        List<String> list2 = Arrays.asList("X", "Y", "Z");        // 创建固定列表 list2

        // 添加操作=
        list1.add("A");                    // 向 list1 添加元素 "A"
        list1.add("B");                    // 向 list1 添加元素 "B"
        list1.addAll(list2);               // 将 list2 的所有元素添加到 list1
        list1.add(1, "Inserted");          // 在索引1的位置插入元素 "Inserted"

        System.out.println("添加元素后: " + list1);

        // 查询和检查操作
        System.out.println("包含A吗? " + list1.contains("A"));        // 检查是否包含元素 "A"
        System.out.println("A的索引: " + list1.indexOf("A"));         // 查找元素 "A" 第一次出现的索引
        System.out.println("列表为空? " + list1.isEmpty());           // 检查列表是否为空

        // 子列表操作 - 子列表是原列表的视图，对子列表的修改会影响原列表
        List<String> subList = list1.subList(1, 4);  // 获取从索引1到3的子列表（不包含索引4）
        System.out.println("子列表(1-3): " + subList);

        // 批量删除操作
        list1.removeAll(Arrays.asList("X", "Y"));  // 删除列表中所有 "X" 和 "Y" 元素
        System.out.println("删除X,Y后: " + list1);

        // 保留交集操作 - 只保留指定的元素，删除其他所有元素
        list1.retainAll(Arrays.asList("A", "B", "Inserted"));  // 只保留 "A", "B", "Inserted"
        System.out.println("保留指定元素后: " + list1);

        // 清空整个列表
        list1.clear();  // 删除列表中的所有元素
        System.out.println("清空后列表: " + list1);
        System.out.println("列表为空? " + list1.isEmpty());  // 确认列表已为空
    }
}
/*
添加元素后: [A, Inserted, B, X, Y, Z]
包含A吗? true
A的索引: 0
列表为空? false
子列表(1-3): [Inserted, B, X]
删除X,Y后: [A, Inserted, B, Z]
保留指定元素后: [A, Inserted, B]
清空后列表: []
列表为空? true*/